Make cftime.datetime - cftime.datetime -> timedelta microsecond-exact #178
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently subtracting a date from another to produce a timedelta is not microsecond-exact:
I think this is actually pretty straightforward to fix using some code that already exists in cftime. I'm drawing inspiration here from the way this kind of operation is done in Python's datetime object. As I understand it, we can simply use
_IntJulianDayFromDate
as something essentially equivalent todatetime.datetime.toordinal
, and everything else should basically be the same.The test confirms the example above is fixed for all calendars, and all other existing tests of timedelta arithmetic pass. @jswhit I think this should enable the exact version of
date2num
you described in #171 (comment). I could try to add that here or in another PR. As you note, it would be awesome to be able to round-trip dates without loss of precision.xref: #109 (this would make the function described there no longer necessary)